package progetto.gruppo0506;

public class POI {
	private String nome;
	private double longitudine;
	private double latitudine;
	private float rating;
	private float personalRating;
	private String reference;
	private int type;
	private boolean visitare;
	private int minutiPermanenza;
	private boolean notificaVicino;
	
	/* Costruttore di supporto per gestire la posizione dell'utente */
	public POI(String nome, double longitudine, double latitudine){
		this.nome = nome;
		this.latitudine = latitudine;
		this.longitudine = longitudine;
	}

	public POI(String nome, double longitudine, double latitudine, float rating, String reference, int type, PreferenzeUtente preferenze) {
		this.nome = nome;
		this.latitudine = latitudine;
		this.longitudine = longitudine;
		this.rating = rating;
		this.reference = reference;
		this.type = type;
		inserisciRatingPersonale(preferenze);
		minutiPermanenza = 120;
		notificaVicino = false;
	}

	public int getMinutiPermanenza() {
		return minutiPermanenza;
	}

	public void setMinutiPermanenza(int minutiPermanenza) {
		this.minutiPermanenza = minutiPermanenza;
	}

	private void inserisciRatingPersonale(PreferenzeUtente preferenze) {
		if (type == PreferenzeUtente.DIVERTIMENTO){
			personalRating = preferenze.getPreferenzaDivertimentoNorm() * rating;
		}
		else if (type == PreferenzeUtente.GASTRONOMIA) {
			personalRating = preferenze.getPreferenzaGastronomiaNorm() * rating;
		}
		else if (type == PreferenzeUtente.CULTURA) {
			personalRating = preferenze.getPreferenzaCulturaNorm() * rating;
		}
	}

	public void setLatitudine(double latitudine) {
		this.latitudine = latitudine;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setLongitudine(double longitudine) {
		this.longitudine = longitudine;
	}

	public void setRating(float rating) {
		this.rating = rating;
	}

	public void setReference(String reference) {
		this.reference = reference;
	}

	public void setType(int type) {
		this.type = type;
	}

	public void setVisitare(boolean visitare) {
		this.visitare = visitare;
	}

	public boolean isVisitare() {
		return visitare;
	}

	public float getPersonalRating() {
		return personalRating;
	}

	public String getReference() {
		return reference;
	}

	public int getType() {
		return type;
	}

	public float getRating() {
		return rating;
	}

	public double getLatitudine() {
		return latitudine;
	}

	public double getLongitudine() {
		return longitudine;
	}

	public String getNome() {
		return nome;
	}
	public boolean getVisitare(){
		return visitare;
	}

	public boolean isNotificaVicino() {
		return notificaVicino;
	}

	public void setNotificaVicino(boolean notificaVicino) {
		this.notificaVicino = notificaVicino;
	}
}